package api;

import org.orm.PersistentException;
import org.orm.PersistentTransaction;

/**
 * @author manu
 *
 */




public class Mensaje {

	/**
	 * Metodo que ingresa el mensaje mas su igual encriptada a la base de datos
	 * @param msje_desencriptado
	 * @param msje_encriptado
	 * @return respuesta. 
	 */
	public String add(String msje_desencriptado, String msje_encriptado) {
		String respuesta = "";
		PersistentTransaction t;
		/*
		 * Validar que vengan los parametros
		 */

		if ((msje_desencriptado.length() > 0 && msje_desencriptado.replace(" ",
				"") != "")
				&& (msje_encriptado.length() > 0 && msje_encriptado.replace(" ",
						"") != "")) {
			try {				
				t = orm.CriptogramaPersistentManager.instance().getSession()
						.beginTransaction();
	            orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();  
				/*
				 * Uso de DAO Interface
				 */
	            orm.dao.Tcr_mensajeDAO oRMTcr_mensajeDAO = lDAOFactory.getTcr_mensajeDAO();	            
	            orm.Tcr_mensaje ormMensaje = oRMTcr_mensajeDAO.loadTcr_mensajeByQuery("men_desencriptado='" + msje_desencriptado
								+ "'", null);

				/*
				 * Validar que registro no exista en la base de datos
				 */
				if (ormMensaje == null) {
					/*
					 * Agrego
					 */
					try {
						orm.Tcr_mensaje lormMensaje = oRMTcr_mensajeDAO
								.createTcr_mensaje();
						lormMensaje.setMen_desencriptado(msje_desencriptado);
						lormMensaje.setMen_encriptado(msje_encriptado);
						// Initialize the properties of the persistent object
						// here
						oRMTcr_mensajeDAO.save(lormMensaje);
						t.commit();

						respuesta = "1";
					} catch (Exception e) {
						t.rollback();
						/*
						 * -3 if exist error in ORM tier
						 */

						respuesta = "-3";
					}
				} else {
					/*
					 * -2 existe el registro
					 */
					respuesta = "-2";
				}
			} catch (PersistentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		} else {
			/*
			 * -1 faltan parametro obligatorio
			 */
			respuesta = "-1";
		}

		return respuesta;
	}

	/**
	 * Metodo que busca un mensaje en la base de datos
	 * @param msje_desencriptado
	 * @param msje_encriptado
	 * @return
	 */
	public orm.Tcr_mensaje[] load(String msje_desencriptado,String msje_encriptado){
		
		String msjesearch = null;
		PersistentTransaction t;
		/*
		 * Validar que vengan los parametros
		 */
		if(msje_desencriptado != null && msje_desencriptado.replace(" ","")!="" ){
			msjesearch = " men_desencriptado='"+msje_desencriptado+"'";
		}
		if(msje_encriptado!=null && msje_encriptado.replace(" ","")!=""){
			
			if(msje_desencriptado == null || msje_desencriptado.replace(" ","")!="" ){
				msjesearch = " men_encriptado='"+msje_encriptado+"' ";
			}
			else {
				msjesearch = msjesearch + " AND men_encriptado='"+msje_encriptado+"' ";
			}
		}
		/*
		 * Buscar los mensajes
		 */
			try {
				t = orm.CriptogramaPersistentManager.instance().getSession()
						.beginTransaction();
	            orm.DAOFactory lDAOFactory = orm.DAOFactory.getDAOFactory();
				/*
				 * Uso de DAO Interface
				 */
	            orm.dao.Tcr_mensajeDAO oRMTcr_mensajeDAO = lDAOFactory.getTcr_mensajeDAO();	  
				orm.Tcr_mensaje ormMensaje[] =  oRMTcr_mensajeDAO.listTcr_mensajeByQuery(msjesearch, null);
				return 	ormMensaje;
			} catch (PersistentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		return null;
	}
	
}
